package com.jxau.service;

import com.github.pagehelper.PageInfo;
import com.jxau.entity.Article;
import com.jxau.entity.Temp;
import com.jxau.entity.view.IndexArticles;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

public interface ArticleService {
    /**
     * 查询所有文章
     * 无登录状态热搜
     *
     * @return 所有文章集合，按时间降序排列
     */
    ArrayList<IndexArticles> queryAllArticles();

    /**
     * 查找所有文章（标记已赞和已收藏）无需判断是否登录
     * 热搜页面
     *
     * @param uid
     * @return 所有文章集合
     */
    ArrayList<IndexArticles> queryAllArticlesWithUid(String uid,int nowPage);

    /**
     * 查询已关注用户发布的文章
     *
     * @param uid
     * @return 已关注用户发布的文章集合
     */
    ArrayList<IndexArticles> queryFollowUsersArticles(String uid,int nowPage);

    /**
     * 添加文章
     *
     * @param article
     */
    void addArticle(Article article);

    /**
     * 查询单篇文章
     *若登录则加上状态，未登录不加状态
     * @param articleId 文章id
     * @param uid       登录用户id
     * @return 点击的文章
     */
    Article queryOneArticleWithUid(int articleId, String uid);

//    /**
//     * 查询单篇文章（非登录状态）
//     *
//     * @param articleId 文章id
//     * @return 点击的文章（包括user、comment（user））
//     */
//    Article queryOneArticleNoLogin(Integer articleId);

    /**
     * 查询该用户文章
     *
     * @param authorId
     * @return
     */
    ArrayList<Article> queryArticlesByAuthorId(String authorId,int nowPage);

    /**
     * 查询我的收藏文章
     * @param uid
     * @return
     */
    ArrayList<Article> queryMyCollection(String uid,int nowPage);

    /**
     * 模糊查询（登录状态）
     *
     * @param str 查询的字段
     * @param uid 登录的用户
     * @return
     */
    ArrayList<IndexArticles> findArticleByStrWithLogin(String str, String uid,int nowPage);

    /**
     * 浏览量+1操作
     * @param articleId
     */
    void viewPlus(int articleId, HttpSession session);
    //---------------------------------------------------------------------------
    List<Temp> getPages(int pageNum, int pageSize);

    PageInfo<Temp> getPagesData();

    List<Temp> getArticleById(int id);

    int deleteArticle(int id);

    void makeTop(int articleId);

    void cancelTop(int articleId);
    //---------------------------------------------------------------------------

}
